home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1990-01-15 | 2.9 KB | 155 lines |
- > $.Comp_Dec89.CSingleton
- *FX225,1
- (*KEY0 *EXEC $.SCREENSUBS |M GOTO7 |M
- *FX153,0,128
- Work%256
- V%=640000:V%-=V%
- W% V%
- C%(10),I%(10),F%(10),O%(10),A%(10),B%(10)
- R%(256)
- INIT("C R J Singleton","POURING PROGRAM")
- C%()=(0):I%()=(0):F%()=(0)
- 10,3);"Clearing Work Space ..."
- x2X$=
- (0)):
- V%-250
- 250:$(W%+I%)=X$:
- CLS:I%=1:T%=0
- ENTER("Capacity of largest container",0,3,
- (C%(1)),
- (27)):
- Y%=27
- C%(1)=X%:
- LIST(1)
- I%+=1:
- ENTER("Capacity of next container",0,3,
- (C%(I%)),
- (27)):
- Y%=27
- C%(I%)=X%:
- LIST(I%):
- I%<10
- I%+=1
- =N%=I%-1:
- N%<10
- I%=N%+1
- 10:C%(I%)=0:I%(I%)=0:F%(I%)=0:
- ENTER("Initial contents of largest container",0,3,
- (I%(1)),
- (27)):
- Y%=27
- I%(1)=X%:
- LIST(N%)
- I%=1:T%=I%(1)
- 3I%+=1:X$="Initial contents of container "+
- ENTER(X$,0,3,
- (I%(I%)),
- (27)):
- Y%=27
- I%(I%)=X%:T%+=X%:
- LIST(N%):
- I%<N%
- ENTER("Final contents of largest container",0,3,
- (F%(1)),
- (27)):
- Y%=27
- F%(1)=X%:
- LIST(N%)
- 1I%+=1:X$="Final contents of container "+
- I%=N%
- F%(I%)=T%:
- N%-1:F%(I%)-=F%(X%):
- X%:C%=F%(I%)
- ENTER(X$,0,3,
- (F%(I%)),
- (27)):
- Y%=27
- F%(I%)=X%:
- LIST(N%):
- I%<N%
- >O%()=(0):O%(2)=1:
- N%:O%(I%)=O%(I%-1)*(C%(I%-1)+1):
- (H%=O%(N%)*(C%(N%)+1):
- H%>V%
- (C%<0)
- (C%<>F%(N%))
- *FX229,0
- *FX225,1
- ,+R%=1:A%()=I%():I%=
- POINT(A%()):W%?I%=R%
- Q%=0:
- POINT(F%()):O%=0
- R%+=1:E%=0:I%=-1:W%?H%=R%-1
- :I%+=1:
- W%?I%=R%-1
- I%=H%
- REV(I%,A%())
- J%=K%
- A%(J%)=0
- A%(K%)=C%(K%)
- X%=A%(J%):
- X%>(C%(K%)-A%(K%))
- X%=C%(K%)-A%(K%)
- B%()=A%():B%(J%)-=X%:B%(K%)+=X%:Y%=
- POINT(B%()):
- W%?Y%=0
- E%+=1:W%?Y%=R%:Q%+=1:
- Y%=P%
- O%=1:
- PROCTIME:OFF:PRINTTAB(40,3) Q% " final conditions found"
- TIME:
- 10,3) R%-1 " pourings examined ";Q%;" final conditions found"
- POINT(F%())
- Y%=W%?X%-1
- F%=Y%
- 10,10+N%) Y% " pourings required"
- R%()=(0)
- POINT(F%()):R%=W%?Q%-1:R%(R%)=Q%
- R%<>F%
- R%=R%
- REV(Q%,B%())
- (I%=J%)
- (B%(J%)=0)
- B%(J%):A%()=B%():A%(I%)+=K%:A%(J%)-=K%:
- A%(I%)>C%(I%)
- (K%<A%(I%))
- (B%(J%)<C%(J%))
- 5%X%=
- POINT(A%()):
- (W%?X%)<>R%
- E%+=1:Q%=X%:R%(R%-1)=X%
- *FX3,10
- 27,64
- :@%=4:
- " ";:
- C%(J%);:
- A%()=I%():I%=0
- v9@%=4:
- " " I% " ";:
- A%(J%);:
- )I%+=1:
- I%<=F%
- REV(R%(I%),A%()):
- :X%=(
- " " X% " Secs"
- *FX3,0
- *FX225,1
- *FX229,0
- "$.Comp_Menu"
- LIST(Z%)
- #7(@%=8:
- 21,7)"Capacity Start Finish"
- C%(X%)>0
- 10,8+X%) X% C%(X%) I%(X%) F%(X%)
- POINT(X%()):
- X%,I%
- +X%=0:
- N%:X%+=X%(I%)*O%(I%):
- I%:=X%
- REV(X%,X%()):
- QX%()=(0):X%(1)=T%:
- I%=N%
- -1:X%(I%)=X%
- O%(I%):X%=X%
- O%(I%):X%(1)-=X%(I%):
-